#ifndef LYRICSPAGE_H
#define LYRICSPAGE_H

#include <QFile>
#include <QPropertyAnimation>
#include <QWidget>

struct LyricLine
{
    qint64 time;  // 歌词显示的时间，单位为毫秒
    QString text; // 歌词内容
    LyricLine(const qint64 q_time, const QString &q_text)
        : time(q_time) // 使用参数初始化时间成员
        , text(q_text) // 使用参数初始化文本成员
    {}
};

namespace Ui
{
    class LyricsPage;
}

class LyricsPage final : public QWidget
{
    Q_OBJECT

public:
    explicit LyricsPage(QWidget *parent = nullptr);
    // 解析歌词文件，传入歌词文件路径
    bool parseLrc(const QString &lrc_path);
    // 根据时间位置获取对应的歌词行索引
    int getLineLrcWordIndex(qint64 pos);
    // 根据索引获取歌词文本
    QString getLineWord(qint64 index);
    // 显示指定时间点的歌词
    void showLrcWord(int time);
    ~LyricsPage() override;

private:
    Ui::LyricsPage *ui;
    QPropertyAnimation *animal_;   // 用于执行属性动画的QPropertyAnimation对象指针
    QVector<LyricLine> lrc_lines_; // 存储歌词行的动态数组，每行歌词包含时间戳和歌词文本信息
};

#endif // LYRICSPAGE_H
